package ink.tiptop.learn.convert.test;

import org.mapstruct.InheritConfiguration;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;

/**
 * @author zjf
 * @date 2020-08-16 21:18
 */
@Mapper
public interface A_ExtendsConvert {

    @Mapping(target = "height", source = "height")
    Car carDtoToCar(CarDto car);

    /**
     * @InheritConfiguration 这个注解可以搜索映射相同的方法
     *  在方法上声明@InheritConfiguration允许MapStruct搜索继承候选以应用从中继承的方法的注解。
     *  如果A的所有类型（源类型和结果类型）可分配给B的相应类型，
     *  则一方法A可以从另一方法B继承配置。需要在当前映射器，
     *  父类/接口或共享配置界面（如10.3.共享配置中所述）中定义被认为是继承的方法。
     *
     *  如果多个方法用于继承，则必须在注解中指定方法名称：@InheritConfiguration(name =“carDtoToCar”)。
     *  方法可以使用@InheritConfiguration并通过另外应用@Mapping，@BorderMapping等来覆盖或修改配置。
     * @param carDto
     * @param car
     */
//    @InheritConfiguration(name = "carDtoToCar")
    @InheritConfiguration
    void carDtoIntoCar(CarDto carDto, @MappingTarget Car car);
}
